import React, { useRef, useState, useEffect } from "react";

//使用自定义hooks实现60s倒计时功能
//自定义hooks的命名规则:以use开头,后面跟上自定义hooks的功能
//initTime 初始时间,默认为60s
const useCountDown = (initTime = 60) => {
    //定义定时器的句柄
    const timer = useRef(null);
    //定义倒计时状态
    const [countDown, setCountDown] = useState(initTime);
    //定义一个状态表示是否正在倒计时
    const [isRuning, setIsRunning] = useState(false);

    //定义开始倒计时的方法
    const startCountDown = () => {
        //判断是否正在倒计时
        if (!isRuning) {
            setIsRunning(true); //修改状态为正在倒计时
            //开始倒计时
            timer.current = setInterval(() => {
                //修改倒计时时间
                setCountDown((pre) => {
                    //如果倒计时时间小于等于0,则清除定时器
                    if (pre < 1) {
                        clearInterval(timer.current);
                        setIsRunning(false);
                        return initTime;
                    }

                    return pre - 1;
                });
            }, 1000);
        }
    };

    //组件卸载时清除定时器
    useEffect(() => {
        return () => {
            if (timer.current) {
                clearInterval(timer.current);
            }
        };
    }, []);

    return { countDown, isRuning, startCountDown };
};

//抛出
export default useCountDown;
